Aufrufhierarchie ermitteln
Beim Programmdebugging ist es manchmal sinnvoll, zu dokumentieren, welche Routine oder Methode von welchem Aufrufer gerufen wurde (SAPMV45A und die Userexits…). Die folgende Routine leistet das.
Wird bei dem CALL-Befehl unter DEPTH die Zahl -1 angegeben, so wird die Tabelle TAB mit der gesamten Aufrufhierarchie gefüllt.
Die folgende Routine können Sie in ein eigenes Programm setzen und dann aus jedem beliebigen anderen Programm heraus aufrufen.
Die Routine
FORM aktuelle_routine. TYPES: begin of abap_call_stack_entry, mainprogram like sy-repid, include like sy-repid, line type i, eventtype like abdbg-leventtype, event like abdbg-levent, flag_system type c, end of abap_call_stack_entry. DATA: acse type abap_call_stack_entry, tab type table of abap_call_stack_entry. CALL 'ABAP_CALLSTACK' ID 'DEPTH' FIELD 2 ID 'CALLSTACK' FIELD tab. LOOP AT tab INTO acse FROM 2. *-- Der Start ab dem zweiten Eintrag ist notwendig, weil in *-- der ersten Tabellenzeile der aktuelle Eintrag steht, also *-- diese FORM-Routine. WRITE: / 'Mainprog:', acse-mainprogram, / 'Include: ', acse-include, / 'Event: ', acse-eventtype, acse-event. ENDLOOP. ENDFORM.
Funktionsbaustein
Hilfreich ist auch der Funktionsbaustein SYSTEM_CALLSTACK, der ebenfalls Informationen über die Aufrufhierarchie liefert!
Klasse
Die Klasse CL_ABAP_GET_CALL_STACK liefert mit Hilfe der Methode GET_CALL_STACK ebenfalls die aktuelle Aufrufhierarchie.
Wahrscheinlich ist die aufbereitete Form des Aufrufstapels in der Regel nützlicher:
DATA(stack) = cl_abap_get_call_stack=>format_call_stack_with_struct( cl_abap_get_call_stack=>get_call_stack( ) ).
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024